package top.ffhome.system.service;

import java.util.List;
import java.util.Set;

import top.ffhome.common.service.BaseService;
import top.ffhome.system.entity.SysMenu;
import top.ffhome.system.entity.SysUser;

public interface SysUserService extends BaseService<SysUser> {
	/**
	 * 通过账号查询用户
	 * 
	 * @param account 账号
	 * @return 用户对象信息
	 */
	SysUser selectByAccount(String account);

	/**
	 * 根据用户ID查询路由信息
	 * 
	 * @param userId 用户ID
	 * @return 路由信息
	 */
	List<SysMenu> selectRoutersByUserId(Long userId);

	/**
	 * 根据用户ID查询菜单
	 * 
	 * @param userId 用户ID
	 * @return 菜单列表
	 */
	List<SysMenu> selectMenusByUserId(Long userId);

	/**
	 * 根据用户ID查询角色ID
	 * @param userId 用户ID
	 * @return 角色ID
	 */
	Set<Long> selectRoleIdsByUserId(Long userId);

	/**
	 * 根据账号查询权限
	 * 
	 * @param account 账号
	 * @return 权限列表
	 */
	Set<String> selectPermsByAccount(String account);

	/**
	 * 根据用户ID查询权限
	 * 
	 * @param userId 用户ID
	 * @return 权限列表
	 */
	Set<String> selectPermsByUserId(Long userId);

	/**
	 * 修改用户密码信息
	 * 
	 * @param user 用户信息
	 * @return 结果
	 */
	int resetPassword(SysUser user);

	/**
	 * 将密码加密
	 * @param password
	 * @param salt
	 * @return
	 */
	String encrypt(String password, String salt);

	/**
	 * 校验账号是否唯一
	 * 
	 * @param account 账号
	 * @return 
	 */
	boolean checkAccountUnique(String account);
}
